package com.ash.mapper.type;

import com.ash.domain.Type;
import org.apache.ibatis.annotations.Param;
import org.springframework.lang.Nullable;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author : Chen Chao
 * @encoding : UTF-8
 * @date : 2021/3/25 16:38
 * @file : project06.com.ash.mapper.book.Type.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public interface TypeMapper {
    /**
     * 添加书籍类型
     *
     * @param type 要添加的书籍类型
     * @return 受影响行数
     */
    int add(Type type);

    /**
     * 查询所有类型
     *
     * @param startIndex 开始页面
     * @param limit      每页大小
     * @return 当前页面的Type列表
     */
    List<Type> selectAll(@Nullable @Param("startIndex") Integer startIndex, @Nullable @Param("limit") Integer limit);

    /**
     * 分页查询数据的数量
     *
     * @return 当前页数据数量
     */
    int dataCount();

    /**
     * 根据id删除书籍类型
     *
     * @param tid 要删除的书籍类型的id
     * @return 受影响的行数
     */
    int deleteById(Integer tid);

    /**
     * 根据id删除书籍类型
     *
     * @param ids 要删除的书籍类型的id列表
     * @return 受影响的行数
     */
    int deleteByIds(List<Integer> ids);


    /**
     * 按照类型名称进行查询
     * @param tname 要查询的tname
     * @return 返回查询的类型列表
     */
    List<Type> selectByTypeName(String tname);

    /**
     * 更新用户信息
     * @param entries 对象信息map的entries
     * @param  tid 类型id
     * @return 受影响的行数
     */
    int update(@Param("entries") Set<Map.Entry<String, Object>> entries, @Param("tid") Integer tid);
}

